// shop page
// ============

define(['zepto', 'utils', 'JST', 'labelSelect'], function($, utils, JST) {
  return {
    init: function(data) {
      this.initBirthDay()
      this.checkClickButton()
    },

    initBirthDay: function() {
      var $picker = $("#birthday")
      $picker.calendar({value: ['1990-01-01']})	
    },

    checkClickButton: function() {

      var $submitButton = $("a.js-submit")
          that = this

      $("input").on('change label:checked', function(event) {
        event.preventDefault();

        var data = that.onInitData()

        if(that.onCheckData(data)) {
          $submitButton.addClass('active')
          that.bindSubmit()
        }
      })

    },

    bindSubmit: function() {
      var $submitButton = $("a.js-submit")
          $form = $("a.js-submit").parents("form")
      	  that = this

      $submitButton.on('click', function(e){
      	e.preventDefault()

      	var data = that.onInitData()
      		  url  =  $(this).attr('href')

      	// validate all input
        if(that.onValidateData(data)) {
          $form.submit()
        }
      })
    },

    // init data
    onInitData: function() {
      return {
        'nickname': {
          'value': $('input[name="nickname"]').val().trim(),
          'message': '请填写昵称'
        },
        'height': {
          'value': $('input[name="height"]').val().trim(),
          'message': '请填写身高'
        },
        'weight': {
          'value': $('input[name="weight"]').val().trim(),
          'message': '请填写体重'
        },
        'birthday': {
          'value': $('input[name="birthday"]').val().trim(),
          'message': '请填写出生日期'
        }
      }

    },

    onCheckData: function(data) {

      var valid = _.find(data, function(item) {
        return !item.value
      })

      var isSexOk = $('input[name="sex"]:checked').length > 0 ? true : false

      if(valid == undefined && isSexOk) {
        return true
      }

      return false
    },

    onValidateData: function(data) {
      var valid = _.find(data, function(item) {
        return !item.value
      })

      if (!!valid) return $.toast(valid.message)

      if (!this.isHeight(data.height.value)) {
        return $.toast('请填写正确的身高数值')
      }

      if (!this.isWeight(data.weight.value)) {
        return $.toast('请填写正确的体重数值')
      }

      var sex = $('input[name="sex"]:checked')

      if(sex.length == 0) {
      	return $.toast('请选择性别')
      }else {
      	data.sex = { 'value': $(sex[0]).val() }
      }

      return true
    },

    isHeight: function(value) {

    	var result = /^\d+$/g.test(value)

    	if(result) {
    	  if(value > 0 && value < 250) {
    	  	return true
    	  }else {
    	  	return false
    	  }
    	}else {

    	  return result

    	}
    },

    isWeight: function(value) {

      var result = /^\d+$/g.test(value) || /^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$/.test(value)

      if(result) {
      	if(value > 0 && value < 1000) {
      	  return true
      	}else {
      	  return false
      	}
      }else {
    	  return result
      }
    }
    
  }
})